#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<errno.h>
#define BUFFSIZE 1024

int main(int argc,char **argv)
{
	int sfd,dfd=1;
	char buf[BUFFSIZE];
	int len,ret,pos;

	if(argc<2)
	{
		fprintf(stderr,"Usage...\n");
		return -1;
	}
	do
	{
		sfd=open(argv[1],O_RDONLY);
		if(sfd<0)
		{
			if(errno!=EINTR)
			{
				perror("open()");
				return -1;
			}
		}
	}while(sfd<0);
	while(1)
	{
		len=read(sfd,buf,BUFFSIZE);
		if(len<0)
		{
			if(errno==EINTR)
				continue;
			perror("read()");
			break;
		}
		if(len==0)
			break;
		pos=0;
		while(len>0)

		{
			ret=write(dfd,buf+pos,len);
			if(ret<0)
			{
				if(errno==EINTR)
					continue;
				perror("write()");
				return -1;
			}
			pos+=ret;
			len-=ret;
		}

	}
	close(dfd);
	close(sfd);
	return 0;
}
